Curso I – SISSA

Introducción a R - Parte 1

Objetivo y contenido

Objetivo y contenido

Objetivo: generar los conocimientos básicos para el análisis e interpretación de datos utilizando el Proyecto R para la Computación Estadística.

Contenido:

  • R y RStudio
  • Introducción a los comandos y asignación de variables
  • Vectores y secuencias
  • Objetos y sus modos y atributos
  • Valores faltantes
  • Algunas funciones
  • Operadores en R

Objetivo y contenido

Contenido:

  • Vectores de índices
  • Matrices, listas y data frames
  • Scripts y paquetes
  • Funciones básicas
  • Operadores aritméticos

Qué es R?

Introducción

El uso de un lenguaje de programación es útil cuando:

  • Se trabaja con grandes conjuntos de datos
  • Se trabaja con datos de alta resolución espacial
  • Se debe aplicar el método en varias regiones o en múltiples pasos de tiempo
  • Se desea lograr eficiencia y automatización

R y RStudio

R es un lenguaje y ambiente de computación estadística y gráficos.

  • R provee técnicas estadísticas y de gráficos
  • R incorpora pruebas estadísticas, modelos y análisis
  • R fue desarrollado por estadistas e investigadores
  • R es gratuito y de código abierto
  • R puede correr en paralelo (en máquinas multi-core o en clusters)

Instalación

R es un software de código abierto y se puede descargar para Linux, OS X (Mac) o Windows.

Image

Interfaz gráfica de usuario

Una interfaz gráfica de usuario permite a los usuarios interactuar con dispositivos electrónicos a través de iconos gráficos en lugar de interfaces de usuario basadas en texto.

Image

RStudio

RStudio es un ambiente de desarrollo integrado para R, que está disponible en ediciones de código abierto y comerciales y se ejecuta en Windows, Mac y Linux.

Image

Scripts

Un script de R es simplemente un archivo de texto que contiene (casi) los mismos comandos que se ingresarían en la línea de comandos de R. Permite al usuario computar el mismo conjunto de acciones continuamente.

Image

Paquetes de R

Los paquetes son colecciones de funciones, datos y código complejo de R en un formato bien definido.

  • R tiene varios paquetes ya cargados
  • Si se necesita un nuevo paquete, se puede descargar desde CRAN, un repositorio donde están disponibles los paquetes de R.

Como ejemplo, podemos instalar el paquete terra:

install.packages("terra")

Paquetes de R

Los paquetes instalados deben cargarse para usar sus funciones. Para este propósito, se utiliza la función library:

library("terra")

Para eliminar un paquete existente:

remove.packages(terra)

Paquetes de R

Para visualizar los paquetes instalados y los paquetes en uso:

library()
search()

Datos en R

R es un lenguaje interpretado

  • Esto significa que cada comando escrito se ejecuta directamente mientras que todos los datos (variables y resultados) se almacenan como objetos (todo en R es un objeto)
  • Las funciones utilizadas en R se ejecutan escribiendo comandos

Datos en R

El resultado de cada comando puede ser:

  1. visualizado directamente en la pantalla
  2. almacenado en un objeto
  3. escrito en el disco duro

Funciones en R

Funciones en R

R es un lenguaje de expresión y es sensible a mayúsculas y minúsculas; por lo tanto, x y X son objetos diferentes que se refieren a variables diferentes

x <- 10
X <- "Esto es un caracter"
print(x)
## [1] 10
print(X)
## [1] "Esto es un caracter"

Funciones en R

El uso de comentarios es muy útil para saber exactamente lo que está sucediendo en el script. Los comentarios siempre deben comenzar con el símbolo #

# Este es un comentario muy útil
x <- 5 * 45

Si un comando no está completo, R mostrará el símbolo + indicando que algo falta. En este caso, puede completar el comando o presionar Esc para cancelar su ejecución.

Recuperación de comandos y datos en R

Para recuperar y ejecutar comandos anteriores, puede usar las teclas de flecha vertical en el teclado. Esto ayuda revisitar y corregir funciones ejecutadas previamente.

Los datos pueden ser visualizados en la pantalla:

5*5
## [1] 25

Recuperación de comandos y datos en R

Almacenados en un objeto:

x <- 5*5
x <- "Hello world"
print(x)
## [1] "Hello world"

Recuperación de comandos y datos en R

O visualizados en la pantalla por un gráfico:

x <- 1:10; y <- 1:10
plot(x, y)

Asignación de variables

Hay muchas maneras de asignar un valor a una variable. La más común es el operador <- que está compuesto por el carácter menor que (<) y el carácter de menos (-).

n <- 5
print(n)
## [1] 5

El operador = también se puede usar.

n <- "Argentina"
print(n)
## [1] "Argentina"

Asignación de variables

Adicionalmente, se puede usar la función assign.

assign("n", 100)
print(n)
## [1] 100

assign("a", "Hola muchachos!")
print(a)
## [1] "Hola muchachos!"

Vectores y secuencias

Vectores y secuencias

Un vector numérico es una colección ordenada de números. Para establecer un vector es necesario usar la función c( ).

x <- c(1, 2, 3, 4, 8, 5, 7)
print(x)
## [1] 1 2 3 4 8 5 7

De manera similar, podemos crear vectores que contengan caracteres:

x <- c("Oscar", "Manuel", "Baez", "Villanueva")
print(x)
## [1] "Oscar"      "Manuel"     "Baez"       "Villanueva"

Vectores y secuencias

A veces necesitamos crear vectores largos que sigan una secuencia conocida. Por ejemplo:

x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(x)
##  [1]  1  2  3  4  5  6  7  8  9 10

Para este propósito, podemos usar el símbolo : que creará una secuencia de enteros consecutivos.

x <- 1:10
print(x)
##  [1]  1  2  3  4  5  6  7  8  9 10

Vectores y secuencias

Otra opción es usar la función seq, que creará una secuencia de acuerdo al intérvalo deseado.

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
    length.out = NULL, along.with = NULL, ...)

Por ejemplo:

x <- seq(from = 1, to = 10, by = 1)
print(x)
##  [1]  1  2  3  4  5  6  7  8  9 10
x <- seq(1, 10, 0.5)
print(x)
##  [1]  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  6.0  6.5  7.0  7.5  8.0
## [16]  8.5  9.0  9.5 10.0

Modo y atributos

Modo

Los objetos se caracterizan por su nombre, contenido y atributos. Representan los datos almacenados en ellos. La función mode identifica el tipo de elementos en el objeto. Cada objeto tiene solo un modo. Hay 4 modos principales (modos atómicos):

  1. Numérico (por ejemplo, 1, -5, 435, 28)
  2. Carácter (por ejemplo, “Hola”, “B”, “Oscar”)
  3. Lógico (es decir, TRUE y FALSE)
  4. Complejo (por ejemplo, 1i, 10i, 1\(\sqrt{-1}\))

Longitud

El comando length indica la cantidad de elementos en un objeto.

x <- "Evaporación"
length(x)
## [1] 1
mode(x)
## [1] "character"

Longitud

El comando length indica la cantidad de elementos en un objeto.

x <- "Evaporation"
length(x)
## [1] 1
mode(x)
## [1] "character"

¿Qué modo y longitud corresponden a estos elementos?

Objeto Modo Longitud
58i
Cadmium
1:10
TRUE

¿Qué modo y longitud corresponden a estos elementos?

Objeto Modo Longitud
58i complejo 1
Cadmium carácter 1
1:10 numérico 10
TRUE lógico 1

Clase

Todos los objetos en R tienen una clase, que se puede obtener con la función class. En el caso de objetos simples, la clase es la misma que el modo (por ejemplo, “numérico”, “carácter” y “lógico”). Para objetos más complejos, la clase será diferente (por ejemplo, “lista”, “arreglo”, “matriz” y “data.frame”).

a <- 1:100
class(a)
## [1] "integer"
b <- c(TRUE, FALSE, TRUE)
class(b)
## [1] "logical"
# Clase de un objeto predefinido
class(mtcars)
## [1] "data.frame"

Datos faltantes

En algunos casos, habrá datos faltantes en un conjunto de valores. Estos valores faltantes se representan mediante NA. Tenga en cuenta que esto no es un carácter.

x <- c(1, 5, 7, NA, 8, 9)
mode(x)
## [1] "numeric"
x <- c(1, 5, 7, "NA", 8, 9)
mode(x)
## [1] "character"

Infinito y No es un número

Inf representa un valor numérico no finito.

1/0
## [1] Inf
log(0)
## [1] -Inf

No es un número (NaN) representa valores que deberían ser numéricos pero no lo son.

sqrt(-1)
## Warning in sqrt(-1): NaNs produced
## [1] NaN
log(-5)
## Warning in log(-5): NaNs produced
## [1] NaN

Algunas funciones

Algunas funciones

abs: valor absoluto del objeto.

abs(-1678)
## [1] 1678

^n: elevar al exponente de n.

2^3
## [1] 8

sqrt: raíz cuadrada del objeto.

sqrt(25)
## [1] 5

Algunas funciones

log: logaritmo natural.

log(100)
## [1] 4.60517

exp: antilogaritmo.

exp(4.6051706)
## [1] 100

rep: repite n veces el objeto.

rep("Hi", times = 6)
## [1] "Hi" "Hi" "Hi" "Hi" "Hi" "Hi"

Algunas funciones

basename: devuelve la parte de la ruta de acceso del archivo después del último separador (/).

data.path <- "C:/Usuarios/Documentos/WS_Sam_Neua/WS1_proj.tif"
basename(data.path)
## [1] "WS1_proj.tif"

dirname: devuelve la parte de la ruta de acceso del archivo antes del último separador (/).

dirname(data.path)
## [1] "C:/Usuarios/Documentos/WS_Sam_Neua"

Algunas funciones

paste: se utiliza para pegar múltiples caracteres de texto juntos en un objeto.

paste("¿Cómo", "estás?")
## [1] "¿Cómo estás?"
num.days <- 31
paste("Enero tiene", num.days, "días.")
## [1] "Enero tiene 31 días."

Algunas funciones

paste0: se utiliza para pegar múltiples caracteres juntos en en un objeto sin espacios.

year      <- 2010
month     <- 12
file.name <- paste0("C:/Usuarios/Documentos/Result_", year, "-", month)
print(file.name)
## [1] "C:/Usuarios/Documentos/Result_2010-12"

Algunas funciones

file.path: Similar a paste y paste0, pero agregará barras diagonales entre cada entrada.

file.path("C:/Usuarios", "Carpeta")
## [1] "C:/Usuarios/Carpeta"

substr: se utiliza para extraer (o reemplazar) subcadenas en un vector de caracteres.

substr("Pink Floyd", 2, 6)
## [1] "ink F"

file.name <- "C:/Usuarios/Documentos/Resultado_2010-12.tif"
year      <- substr(file.name, 34, 40)
print(year)
## [1] "2010-12"

Algunas funciones

Para este segundo ejemplo, podríamos combinar la función substr y basename de la siguiente manera:

yr <- substr(basename(file.name), 11, 17)
print(yr)
## [1] "2010-12"

Algunas funciones

Para listar los archivos dentro de una carpeta, se puede utilizar la función list.files. Copie una ruta desde una carpeta en su computadora.

list.files(path = ".", pattern = NULL, all.files = FALSE,
           full.names = FALSE, recursive = FALSE,
           ignore.case = FALSE, include.dirs = FALSE, no.. = FALSE)

Por ejemplo:

list.files("C:/Usuario/Data/L2_Introduction_II_Data/Cities")
## [1] "Italy.csv" "Spain.csv"

Algunas funciones

list.files("C:/Usuario/Data/L2_Introduction_II_Data/Cities", full.names = TRUE)
## [1] "../Data/L2_Introduction_II_Data/Cities/Italy.csv"
## [2] "../Data/L2_Introduction_II_Data/Cities/Spain.csv"

Sys.time: Imprime la fecha y hora actual. Esto puede ser útil al ejecutar scripts largos, para determinar cuánto tiempo ha tardado en ejecutarse un paso o todo el script.

Sys.time()
## [1] "2023-05-12 12:43:20 CEST"

Algunas funciones

t(): Transpone una matriz.

example <- matrix(c(1:20), nrow = 5)
print(example)
##      [,1] [,2] [,3] [,4]
## [1,]    1    6   11   16
## [2,]    2    7   12   17
## [3,]    3    8   13   18
## [4,]    4    9   14   19
## [5,]    5   10   15   20
example.trans <- t(example)
print(example.trans)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20

Algunas funciones

cumsum: Devuelve la suma acumulada de un vector.

cumsum(c(1, 2, 3, 4))
## [1]  1  3  6 10

log10: Logaritmo base 10.

log10(100)
## [1] 2

Getting help

La función help.start abrirá un navegador web que permite navegar por las páginas de ayuda con hipervínculos.

help.start()

No es necesario memorizar toda la información para incluir en cada función. Puede buscar la documentación de R con el signo de interrogación (?) antes del nombre de la función.

?sum

Obtener ayuda

Además, los dobles signos de interrogación (??) buscan en los archivos de ayuda de R una palabra o frase.

??sum

Operadores en R

Operadores en R

Dos vectores se pueden sumar, restar, multiplicar y dividir:

x <- 1:10
y <- 11:20
x + y
##  [1] 12 14 16 18 20 22 24 26 28 30
x - y
##  [1] -10 -10 -10 -10 -10 -10 -10 -10 -10 -10
x * y
##  [1]  11  24  39  56  75  96 119 144 171 200
x / y
##  [1] 0.09090909 0.16666667 0.23076923 0.28571429 0.33333333 0.37500000
##  [7] 0.41176471 0.44444444 0.47368421 0.50000000

Operadores en R

range: devuelve los valores mínimo y máximo de un vector.

range(x)
## [1]  1 10

Las funciones max, min, mean y var devuelven, los valores máximos, mínimos, media y varianza de un vector.

x <- -10:10
max(x)
## [1] 10
min(x)
## [1] -10
mean(x)
## [1] 0
var(x)
## [1] 38.5

Operadores en R

sum: devuelve la suma de cualquier vector.

sum(c(1, 2, 3, 4))
## [1] 10

prod: devuelve el producto de cualquier vector.

prod(c(1, 2, 3, 4))
## [1] 24

Operadores en R

sort: ordena los valores de manera creciente (por defecto) o decreciente (decreasing = TRUE).

y <- c(5, 3, 6, 8, 3, -1)
sort(y)
## [1] -1  3  3  5  6  8
sort(y, decreasing = TRUE)
## [1]  8  6  5  3  3 -1

Por favor, ordene el siguiente vector de manera creciente y decreciente:

5, 9, 12, -10, -5, 3, 900

Operadores en R

order: funciona de manera similar a la función sort, pero en lugar de devolver los valores reordenados, devuelve las posiciones de esos valores.

y <- c(5, 3, 6, 8, 3, -1)
order(y)
## [1] 6 2 5 1 3 4

Operadores en R

¿Cuándo podemos usar order en lugar de sort?

Vectores de índices

Los corchetes cuadrados ([]) se pueden usar para extraer elementos de un vector.

x <- c(10, 12, 13, 13, 17, 18, 18, 18, 21, 22)
x[1]
## [1] 10
x[c(1, 2, 3)]
## [1] 10 12 13

Vectores de índices

Para extraer todo excepto uno o más elementos seleccionados, podemos usar el símbolo menos dentro de los corchetes cuadrados:

x[-1]
## [1] 12 13 13 17 18 18 18 21 22
x[-c(1, 4, 7)]
## [1] 12 13 17 18 18 21 22

Vectores de índices

Del mismo vector, extraiga:

  • El quinto elemento
  • El tercero, sexto y octavo
  • Todo excepto el décimo

Valores únicos en un vector

Para mostrar todos los valores únicos en un vector, podemos usar la función unique.

x <- c(10, 12, 13, 13, 17, 18, 18, 18, 21, 22)
unique(x)
## [1] 10 12 13 17 18 21 22

La función which

Para encontrar la posición de un objeto específico (por ejemplo, valores numéricos, valores de caracteres) en un vector, se usa la función which.

  • Si el objeto solicitado no existe en el vector, el vector de salida no tiene valores dentro de él.
x <- c(10, 12, 13, 13, 17, 18, 18, 18, 21, 22)
which(x == 18)
## [1] 6 7 8
which(x > 17)
## [1]  6  7  8  9 10
which(x == 9)
## integer(0)

La función which

Para conocer la posición de los valores que no son iguales a un objeto específico, podemos usar la función which junto con el operador lógico de desigualdad “!=”.

x <- c(10, 12, 13, 13, 17, 18, 18, 18, 21, 22)
which(x != 18)
## [1]  1  2  3  4  5  9 10

Nota: cuando se quiere buscar múltiples valores dentro de un objeto, es mejor usar la función %in% (ver Módulo 4).

Matrices, listas y data frames

Matrices

Una matriz es un array bidimensional. Se puede crear con la función matrix.

# Matriz con 5 filas y 2 columnas y el número 10 como valor
x <- matrix(10, nrow = 5, ncol = 2)
print(x)
##      [,1] [,2]
## [1,]   10   10
## [2,]   10   10
## [3,]   10   10
## [4,]   10   10
## [5,]   10   10

Matrices

Con la función rnorm, podemos crear valores aleatorios con una distribución normal. Podemos usar esta función para crear una matriz de 60 valores aleatorios:

# Matriz con 12 filas y 5 columnas y valores aleatorios
x <- matrix(rnorm(60), nrow = 12)
print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338

Matrices

Extraer valores de una matriz es similar a extraer valores de un vector; sin embargo, una matriz tiene dos dimensiones [número de fila, número de columna].

print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338
x[9, 3]
## [1] -0.7451575

Matrices

print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338
x[, 1]
##  [1] -0.48166296 -0.68547500 -2.49579459  0.22732001  1.06116951 -1.36464453
##  [7]  0.44641634  0.27126490 -0.49303449 -0.01489914  0.14959034  0.57714502

Matrices

print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338
x[3, ]
## [1] -2.49579459  1.74108869  1.82598026 -0.08786605 -0.20404388

Matrices

print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338
x[c(1, 2), 4]
## [1]  0.8493698 -0.8079717

Matrices

print(x)
##              [,1]        [,2]       [,3]        [,4]       [,5]
##  [1,] -0.48166296  0.24840174  1.4311439  0.84936978 -0.1191159
##  [2,] -0.68547500 -0.02879572  0.1839533 -0.80797167 -0.3899637
##  [3,] -2.49579459  1.74108869  1.8259803 -0.08786605 -0.2040439
##  [4,]  0.22732001 -2.02229860 -1.3098062 -0.84055964 -2.0630774
##  [5,]  1.06116951 -0.79552644 -0.9220030 -0.08553025 -0.9939877
##  [6,] -1.36464453 -0.26269084 -0.1016643  0.24596622 -0.1928796
##  [7,]  0.44641634 -0.64346843 -0.9653148 -0.69387298  1.0900532
##  [8,]  0.27126490  2.18379253  0.8006717  0.89262105 -0.4969217
##  [9,] -0.49303449 -0.86117202 -0.7451575 -0.71564718  0.7213207
## [10,] -0.01489914  1.32593727  1.5843628 -0.75317053 -0.3264333
## [11,]  0.14959034 -0.17864492  1.5087869 -1.21969919 -0.4093403
## [12,]  0.57714502 -0.42502538 -0.7483994 -0.83004386 -0.7633338
x[c(3, 4), c(1, 2)]
##           [,1]      [,2]
## [1,] -2.495795  1.741089
## [2,]  0.227320 -2.022299

Listas

Una lista es una colección ordenada de objetos conocidos como componentes, que pueden ser de diferentes clases.

Crear una lista e imprimirla:

my.list <- list(name = "T Rex", period = "Cretácico", dinos.eaten = c(8, 12, 18))
print(my.list)
## $name
## [1] "T Rex"
## 
## $period
## [1] "Cretácico"
## 
## $dinos.eaten
## [1]  8 12 18

Listas

Los elementos de una lista siempre están enumerados. Para acceder a cada nivel de una lista:

my.list$name
## [1] "T Rex"
my.list$period
## [1] "Cretácico"
my.list$dinos.eaten
## [1]  8 12 18

También se puede acceder utilizando su respectiva posición:

my.list[[3]]
## [1]  8 12 18

¿Por qué corchetes dobles?

Listas

my.list[[3]]
## [1]  8 12 18

Ahora que sabemos donde están los valores de dinos.eaten, ¿Cómo podemos extraer el número 12?

a <- my.list[[3]]
print(a)
## [1]  8 12 18
a[2]
## [1] 12

# O:
my.list[[3]][2]
## [1] 12

Data frames

Un data frame es una tabla o estructura de tipo array bidimensional en la que cada columna contiene valores de una variable y cada fila contiene un conjunto de valores de cada columna.

Las reglas para los data frames son las siguientes:

  1. Los nombres de las columnas no deben de estar vacíos.
  2. Los nombres de las filas deben ser únicos.
  3. Los datos almacenados en un data frame pueden ser numéricos, factores o caracteres.
  4. Cada columna debe tener el mismo número de elementos de datos.

Data frames

Para construir un data frame, se utiliza la función data.frame. Como ejemplo, tenemos la siguiente información:

River Length(km) Discharge (m\(^3\)/s)
Congo 4370 41200
Mekong 4023 16000
Rhine 1233 2900
river.data <- data.frame(River = c("Congo", "Mekong", "Rhine"),
                         Length = c(4370, 4023, 1233),
                         Discharge = c(41200, 16000, 2900))
print(river.data)
##    River Length Discharge
## 1  Congo   4370     41200
## 2 Mekong   4023     16000
## 3  Rhine   1233      2900

Data frames

Utilizando el símbolo $, podemos extraer datos de una columna determinada.

river.data$Length
## [1] 4370 4023 1233
river.data$Length[3]
## [1] 1233
river.data[,2]
## [1] 4370 4023 1233

Data frames

El simbolo $ también se puede utilizar para crear una nueva columna de datos. Aquí convertiremos la descarga de m\(^3\)/s a BCM/año y lo almacenaremos en una nueva columna de datos.

river.data$Discharge_BCMyear <- river.data$Discharge * 365.25 * 24 * 60 * 60 / 10^9
print(river.data)
##    River Length Discharge Discharge_BCMyear
## 1  Congo   4370     41200        1300.17312
## 2 Mekong   4023     16000         504.92160
## 3  Rhine   1233      2900          91.51704

Scripts y paquetes

Ejecución de scripts:

  • La combinación Ctrl + Enter ejecutará (lo mismo que el botón “Run” en la esquina superior derecha del área de scripts):
    • La línea de código en la que se encuentra
    • Todo el código que está seleccionado al hacer clic y arrastrar
  • La combinación Ctrl + Shift + s ejecutará todo el script (lo mismo que el botón “Source” en la esquina superior derecha del área de scripts)

¡Gracias por su atención!